home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / interfaces / PInterface Translator / PInterfaces / SANE.p < prev    next >
Encoding:
Text File  |  1993-09-16  |  6.7 KB  |  254 lines  |  [TEXT/MPS ]

  1. {
  2. Created: Friday, September 15, 1989 at 5:01 PM
  3.     SANE.p
  4.     Pascal Interface to the Macintosh Libraries
  5.  
  6.     Copyright Apple Computer, Inc.    1985-1989
  7.     All rights reserved
  8. }
  9.  
  10.  
  11. {$IFC UNDEFINED UsingIncludes}
  12. {$SETC UsingIncludes := 0}
  13. {$ENDC}
  14.  
  15. {$IFC NOT UsingIncludes}
  16.     UNIT SANE;
  17.     INTERFACE
  18. {$ENDC}
  19.  
  20. {$IFC UNDEFINED UsingSANE}
  21. {$SETC UsingSANE := 1}
  22.  
  23. {$I+}
  24. {$SETC SANEIncludes := UsingIncludes}
  25. {$SETC UsingIncludes := 1}
  26. {$SETC UsingIncludes := SANEIncludes}
  27.  
  28. { Elems881 mode set by -d Elems881=true on Pascal command line }
  29.  
  30. {$IFC UNDEFINED Elems881}
  31. {$SETC Elems881 = FALSE}
  32. {$ENDC}
  33.  
  34.  
  35. CONST
  36. {$IFC OPTION(MC68881)}
  37.  
  38. {*======================================================================*
  39.  *    The interface specific to the MC68881 SANE library    *
  40.  *======================================================================*}
  41.  
  42. Inexact = 8;
  43. DivByZero = 16;
  44. Underflow = 32;
  45. Overflow = 64;
  46. Invalid = 128;
  47. CurInex1 = 256;
  48. CurInex2 = 512;
  49. CurDivByZero = 1024;
  50. CurUnderflow = 2048;
  51. CurOverflow = 4096;
  52. CurOpError = 8192;
  53. CurSigNaN = 16384;
  54. CurBSonUnor = 32768;
  55.  
  56.  
  57. {$ELSEC}
  58.  
  59. {*======================================================================*
  60.  *    The interface specific to the software SANE library    *
  61.  *======================================================================*}
  62.  
  63. Invalid = 1;
  64. Underflow = 2;
  65. Overflow = 4;
  66. DivByZero = 8;
  67. Inexact = 16;
  68. IEEEDefaultEnv = 0;     {IEEE-default floating-point environment constant}
  69.  
  70.  
  71. {$ENDC}
  72.  
  73. {*======================================================================*
  74.  *    The common interface for the SANE library     *
  75.  *======================================================================*}
  76.  
  77. DecStrLen = 255;
  78. SigDigLen = 20;         {for 68K; use 28 in 6502 SANE}
  79.  
  80.  
  81. TYPE
  82.  
  83. RelOp = (GreaterThan,LessThan,EqualTo,Unordered);
  84.  
  85. NumClass = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);
  86.  
  87. RoundDir = (ToNearest,Upward,Downward,TowardZero);
  88.  
  89. RoundPre = (ExtPrecision,DblPrecision,RealPrecision);
  90.  
  91. DecimalKind = (FloatDecimal,FixedDecimal);
  92.  
  93. {$IFC OPTION(MC68881)}
  94.  
  95. {*======================================================================*
  96.  *    The interface specific to the MC68881 SANE library    *
  97.  *======================================================================*}
  98. Exception = LONGINT;
  99.  
  100. Environment = RECORD
  101.     FPCR: LONGINT;
  102.     FPSR: LONGINT;
  103.     END;
  104.  
  105. Extended80 = ARRAY [0..4] OF INTEGER;
  106.  
  107. TrapVector = RECORD
  108.     Unordered: LONGINT;
  109.     Inexact: LONGINT;
  110.     DivByZero: LONGINT;
  111.     Underflow: LONGINT;
  112.     OpError: LONGINT;
  113.     Overflow: LONGINT;
  114.     SigNaN: LONGINT;
  115.     END;
  116.  
  117. {$ELSEC}
  118.  
  119. {*======================================================================*
  120. *  The interface specific to the software SANE library      *
  121. *======================================================================*}
  122.  
  123. Exception = INTEGER;
  124.  
  125. Environment = INTEGER;
  126.  
  127. Extended96 = ARRAY [0..5] OF INTEGER;
  128.  
  129. MiscHaltInfo = RECORD
  130.     HaltExceptions: INTEGER;
  131.     PendingCCR: INTEGER;
  132.     PendingD0: LONGINT;
  133.     END;
  134.  
  135. {$ENDC}
  136.  
  137. {*======================================================================*
  138. *  The common interface for the SANE library    *
  139. *======================================================================*}
  140.  
  141. DecStr = STRING[DecStrLen];
  142.  
  143. DecForm = RECORD
  144.     style: DecimalKind;
  145.     digits: INTEGER;
  146.     END;
  147.  
  148. Decimal = RECORD
  149.     sgn: 0..1;
  150.     exp: INTEGER;
  151.     sig: STRING[SigDigLen];
  152.     END;
  153.  
  154. CStrPtr = ^CHAR;
  155.  
  156.  
  157.  
  158. {$IFC OPTION(MC68881)}
  159.  
  160. { return IEEE default environment }
  161. FUNCTION IEEEDefaultEnv: environment;
  162. PROCEDURE SetTrapVector(Traps: trapvector);
  163. PROCEDURE GetTrapVector(VAR Traps: trapvector);
  164. FUNCTION X96toX80(x: Extended): extended80;
  165. FUNCTION X80toX96(x: extended80): Extended;
  166. {$IFC Elems881 = false}
  167.  
  168. { sine }FUNCTION Sin(x: Extended): Extended;
  169. FUNCTION Cos(x: Extended): Extended;
  170. FUNCTION ArcTan(x: Extended): Extended;
  171. FUNCTION Exp(x: Extended): Extended;
  172. FUNCTION Ln(x: Extended): Extended;
  173. FUNCTION Log2(x: Extended): Extended;
  174. FUNCTION Ln1(x: Extended): Extended;
  175. FUNCTION Exp2(x: Extended): Extended;
  176. FUNCTION Exp1(x: Extended): Extended;
  177. FUNCTION Tan(x: Extended): Extended;
  178. {$ENDC}
  179.  
  180. {$ELSEC}
  181.  
  182. { return halt vector }FUNCTION GetHaltVector: LONGINT;
  183. PROCEDURE SetHaltVector(v: LONGINT);
  184. FUNCTION X96toX80(x: Extended96): Extended;
  185. FUNCTION X80toX96(x: Extended): Extended96;
  186. FUNCTION Log2(x: Extended): Extended;
  187. FUNCTION Ln1(x: Extended): Extended;
  188. FUNCTION Exp2(x: Extended): Extended;
  189. FUNCTION Exp1(x: Extended): Extended;
  190. FUNCTION Tan(x: Extended): Extended;
  191. {$ENDC}
  192.  
  193.  
  194. {*======================================================================*
  195. *  The common interface for the SANE library    *
  196. *======================================================================*}
  197.  
  198. {---------------------------------------------------
  199. * Conversions between numeric binary types.
  200. ---------------------------------------------------}
  201.  
  202. FUNCTION Num2Integer(x: Extended): INTEGER;
  203. FUNCTION Num2Longint(x: Extended): LONGINT;
  204. FUNCTION Num2Real(x: Extended): real;
  205. FUNCTION Num2Double(x: Extended): DOUBLE;
  206. FUNCTION Num2Extended(x: Extended): Extended;
  207. FUNCTION Num2Comp(x: Extended): Comp;
  208. PROCEDURE Num2Dec(f: decform;x: Extended;VAR d: decimal);
  209. FUNCTION Dec2Num(d: decimal): Extended;
  210. PROCEDURE Num2Str(f: decform;x: Extended;VAR s: DecStr);
  211. FUNCTION Str2Num(s: DecStr): Extended;
  212. PROCEDURE Str2Dec(s: DecStr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  213. PROCEDURE CStr2Dec(s: CStrPtr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  214. PROCEDURE Dec2Str(f: decform;d: decimal;VAR s: DecStr);
  215. FUNCTION Remainder(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
  216. FUNCTION Rint(x: Extended): Extended;
  217. FUNCTION Scalb(n: INTEGER;x: Extended): Extended;
  218. FUNCTION Logb(x: Extended): Extended;
  219. FUNCTION CopySign(x: Extended;y: Extended): Extended;
  220. FUNCTION NextReal(x: real;y: real): real;
  221. FUNCTION NextDouble(x: DOUBLE;y: DOUBLE): DOUBLE;
  222. FUNCTION NextExtended(x: Extended;y: Extended): Extended;
  223. FUNCTION XpwrI(x: Extended;i: INTEGER): Extended;
  224. FUNCTION XpwrY(x: Extended;y: Extended): Extended;
  225. FUNCTION Compound(r: Extended;n: Extended): Extended;
  226. FUNCTION Annuity(r: Extended;n: Extended): Extended;
  227. FUNCTION RandomX(VAR x: Extended): Extended;
  228. FUNCTION ClassReal(x: real): NumClass;
  229. FUNCTION ClassDouble(x: DOUBLE): NumClass;
  230. FUNCTION ClassComp(x: Comp): NumClass;
  231. FUNCTION ClassExtended(x: Extended): NumClass;
  232. FUNCTION SignNum(x: Extended): INTEGER;
  233. FUNCTION NAN(i: INTEGER): Extended;
  234. PROCEDURE SetException(e: Exception;b: BOOLEAN);
  235. FUNCTION TestException(e: Exception): BOOLEAN;
  236. PROCEDURE SetHalt(e: Exception;b: BOOLEAN);
  237. FUNCTION TestHalt(e: Exception): BOOLEAN;
  238. PROCEDURE SetRound(r: RoundDir);
  239. FUNCTION GetRound: RoundDir;
  240. PROCEDURE SetPrecision(p: RoundPre);
  241. FUNCTION GetPrecision: RoundPre;
  242. PROCEDURE SetEnvironment(e: environment);
  243. PROCEDURE GetEnvironment(VAR e: environment);
  244. PROCEDURE ProcEntry(VAR e: environment);
  245. PROCEDURE ProcExit(e: environment);
  246. FUNCTION Relation(x: Extended;y: Extended): RelOp;
  247.  
  248. {$ENDC}    { UsingSANE }
  249.  
  250. {$IFC NOT UsingIncludes}
  251.     END.
  252. {$ENDC}
  253.  
  254.